package com.yxw.yxnet_cd_center.customer_service.service;
//import com.baomidou.mybatisplus.extension.service.IService;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import java.util.List;
//import com.yxw.customer_service_center.customer_service.entity.YxcscCustomerAccessServiceEntity;
//import com.yxw.customer_service_center.customer_service.dto.YxcscCustomerAccessServiceDTO;
import com.yxw.yxnet_cd_center.common.utils.BaseResult;
import com.yxw.yxnet_cd_center.customer_service.dto.CustomerRequestServiceDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.SessionTalkRecordDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.YxcscServiceTalkRecordDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.YxcscFlockTalkRecordDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.CustomQueryServiceDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.CustomQueryWorkflowDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.CustomerSetWorkFlowDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.TechnicalSupportFinishWorkFlowDTO;
import com.yxw.yxnet_cd_center.customer_service.entity.YxcscCustomerAccessServiceEntity;
import java.util.List;
import javax.servlet.http.HttpServletRequest;


/**
 * 客服会话所有处理
 * @author hjx
 * @date 2023.09.22
 */
//public interface IYxcscCustomerAccessServiceService  extends IService<YxcscCustomerAccessServiceDTO>{
public interface IYxcscCustomerAccessServiceService  
{
    /*** 
    * 获取日志文件列表
    * @param userId
    * @return BaseResult
    **/
    public BaseResult getErrorLogFiles(String LogFilePath);
    /*** 
    * 获取Mqtt服务器信息
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult getMqttInfoNotSafe(String channelCode,Long userId); 
    /*** 
    * 获取Mqtt服务器信息
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult getMqttInfo(HttpServletRequest httpRequest,String channelCode,Long userId);
    /*** 
    * JS客服端完成MQTT主题订阅知会服务器接口
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult jsClientSubscribeTopicResult(Long userId,Integer result);    
    /*** 
    * 客服申请某个服务
    * @param userId
    * @return MqttServerInforVO
    **/ 
    public BaseResult customerRequestService(CustomerRequestServiceDTO oCustomerRequestServiceDTO);
    
    /*** 
    * 客服将某个服务指派给别人
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult customerSetServiceToCustomer(Long userId,Long toCustomerId,String sessionId);

    /*** 
    * 客服申请技术组协助
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult customerSetWorkflowToTechnicalSupportFlock(CustomerSetWorkFlowDTO oCustomerSetWorkFlowDTO);
    /*** 
    * 技术支持组成员申请接受工单/技术支持
    * @param userId
    * @param flockId
    * @param workflowId
    * @return BaseResult
    **/
    public BaseResult technicalSupportAcceptWorkFlow(Long userId,Long workflowId);
    /*** 
    * 技术支持组管理员指派工单/技术支持
    * @param managerId
    * @param userId
    * @param sessionId
    * @param workflowId
    * @return BaseResult
    **/
    public BaseResult technicalSupportManagerSetWorkFlow(Long managerId,Long userId,Long workflowId);    
    /*** 
    * 技术支持组成员完成工单/技术支持
    * @param oTechnicalSupportFinishWorkFlowDTO
    * @return BaseResult
    **/
    public BaseResult technicalSupportFinishWorkFlow(TechnicalSupportFinishWorkFlowDTO oTechnicalSupportFinishWorkFlowDTO);    
    /*** 
    * 发送聊天消息给某个客户
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult sendTalkInforToClient(SessionTalkRecordDTO oSessionTalkRecordDTO);
    /*** 
    * 客服发送聊天消息给某个客服群
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult sendTalkInforToFlock(YxcscFlockTalkRecordDTO oYxcscFlockTalkRecordDTO);
    
    /*** 
    * 客服完成某个服务接口
    * @param userId
    * @return MqttServerInforVO
    **/
    public BaseResult customerFinishOneService(Long userId,String sessionId);
    /*** 
    * 客服邀请客服评分接口
    * @param sessionId  服务Id
    * @return Page
    **/
    public BaseResult customerInviteClientScore(Long userId,String sessionId);    
    /*** 
    * 客服查询服务聊天接口
    * @param currentPage 当前页
    * @param pageSize 分页大小
    * @param oYxcscFlockTalkRecordDTO
    * @return Page
    **/
    public BaseResult customerQueryTalkRecord(int currentPage,int pageSize,YxcscServiceTalkRecordDTO oYxcscServiceTalkRecordDTO);
    /*** 
    * 客服查询群聊天记录接口
    * @param flockId 群Id
    * @param currentPage 当前页
    * @param pageSize 分页大小
    * @return Page
    **/
    public BaseResult customerQueryFlockTalkRecord(Long flockId,Integer currentPage,Integer pageSize);
    /*** 
    * 客服查询服务接口
    * @param currentPage 当前页
    * @param pageSize 分页大小
    * @param oCustomQueryServiceDTO
    * @return Page
    **/
    public BaseResult customerQueryService(int currentPage,int pageSize,CustomQueryServiceDTO oCustomQueryServiceDTO);
    /*** 
    * 客服查询服务详情接口
    * @param sessionId  服务Id
    * @return Page
    **/
    public BaseResult customerQueryServiceById(String sessionId);
    /*** 
    * 客服查询服务流转接口
    * @param currentPage 当前页
    * @param pageSize 分页大小
    * @param oCustomQueryServiceDTO
    * @return Page
    **/
    public BaseResult customQueryWorkflow(int currentPage,int pageSize,CustomQueryWorkflowDTO oCustomQueryWorkflow); 
    /*** 
    * 客服查询服务流转详情接口
    * @param workflowId 服务流转记录Id
    * @return Page
    **/
    public BaseResult customQueryWorkflowById(Long workflowId); 
    
    /*** 
    * 客服查询技术支持组成员列表接口
    * @return Page
    **/
    public BaseResult customerQueryTechnicalSupportFlockUsers();
    
    
    /*** 
    *客服撤回/删除聊天记录接口
    * @param customerId 客服Id
    * @param recordId 聊天记录Id
    * @param operationState 操作状态:0正常的消息,1删除的消息,2撤回的消息
    * @return BaseResult
    **/
    public BaseResult customerRevokeServiceTalkRecord(Long customerId,Long recordId,Integer operationState);
    
    
    /*** 
    * 系统用户撤回/删除群聊天记录接口
    * @param userId 系统用户Id
    * @param recordId 聊天记录Id
    * @param operationState 操作状态:0正常的消息,1删除的消息,2撤回的消息
    * @return BaseResult
    **/
    public BaseResult userRevokeFlockTalkRecord(Long userId,Long recordId,Integer operationState);
    /*** 
    * 客服查询某个服务中自己所处理的会话接口
    * @param sessionId  服务Id
    * @param customerId  客服Id
    * @return Page
    **/
    public BaseResult queryCustomerAccessService(String sessionId,Long customerId); 
    /*** 
    * 客服根据会话Id查询聊天记录接口
    * @param sessionId  服务Id
    * @param customerId  客服Id
    * @return Page
    **/
    public BaseResult queryServiceTalkRecordByCustomerAccessIds(int currentPage,int pageSize,List<YxcscCustomerAccessServiceEntity> oListCustomerAccessService);    
}
    

